﻿using System;
using System.Data.SqlClient ;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.OleDb;
using System.Configuration;

namespace Evaluation3.utils
{
	/// <summary>
	/// Summary description for dataImp.
	/// </summary>
	public class dataUtils
	{
       
		public dataUtils()
		{
        }
        #region
        ///<summary>
        /// Tuan Pham 25-06-2007
        /// get OleDb Connection
        ///</summary>
        #endregion
        public static OleDbConnection GETOLEDBCONNECTION () {
            return new OleDbConnection(ConfigurationManager.ConnectionStrings["evaOledbConn"].ToString());
        }

        #region GETCONNECTION()
        /// <summary>
        /// Tùng LA 28-05-2009
        /// Lấy vào Connection từ file Config
        /// </summary>
        /// <returns>SqlConnection</returns>
		public static SqlConnection GETCONNECTION() {

            string sConn = ConfigurationManager.ConnectionStrings["evaConn"].ToString();
            SqlConnection conn = new SqlConnection(sConn);
            return conn;  
        }

        #endregion

        // HTML Object

		public static void SETOPTIONVALUES(HtmlSelect select, Array values) {
		}
		public static void SETGRIDVALUES(DataGrid grid, DataTable table){
		}
		public static void SETTEXTBOXVALUES(HtmlInputText txtBox, string values) {
        }
        public static String EXECUTESCALAR(String procedure_call) {
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = GETCONNECTION();
            cmd.Connection.Open();
            cmd.CommandText = procedure_call;
            String result = "0";
            if (cmd.ExecuteScalar() != null) {
                result = cmd.ExecuteScalar().ToString(); 
            } 
            
            return result;
        }
        #region ExecuteNonQuery
        
        #region ExecuteNonQuery(string sqlStr, CommandType type, params SqlParameter[] parr)
        /// <summary>
        /// Tùng LA 28-05-2007
        /// Hàm thực hiện các việc như INSERT UPDATE DELETE
        /// </summary>
        /// <param name="sqlStr">Đưa vào câu lệnh Sql</param>
        /// <param name="type">Kiểu của câu lệnh : Storeprocedure, Text, TableDirect</param>
        /// <param name="parr">Dải các tham số cho câu lệnh Sql</param>
        /// <returns>Chuỗi thông báo đã có bao nhiêu dòng bị tác động</returns>
        public static string ExecuteNonQuery(string sqlStr, CommandType type, params SqlParameter[] parr)
        {
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = GETCONNECTION();
            cmd.CommandText = sqlStr;
            cmd.CommandType = type;
            if (parr != null && parr.Length > 0)
            {
                cmd.Parameters.AddRange(parr);
            }
            cmd.Connection.Open();
            string notice = cmd.ExecuteNonQuery().ToString();
            cmd.Parameters.Clear();
            cmd.Connection.Close();
            return notice;
        }
        #endregion                
        
        #endregion

        #region ExecuteQuery()
        ///<sumary>
        /// Tùng LA 30-05-2007
        /// Thực hiện các câu truy vấn SELECT, ...
        /// <return>DataSet chứa kết quả quẻy</return>
        ///</sumary>
        
        #region public static DataSet ExecuteQuery(string sqlStr, CommandType type, params SqlParameter[] parr)
        /// <summary>
        /// Tùng LA 30-05-2007
        /// Method thực hiện việc đọc dữ liệu từ cơ sở dữ liệu
        /// Thường là ứng với lệnh SELECT trong sql
        /// Sử dụng DataAdapter
        /// </summary>
        /// <param name="sqlStr">String chứa câu query sql</param>
        /// <param name="type">Kiểu của câu query vd: CommandType.StoreProcedure hoặc CommandType.Text</param>
        /// <param name="parr">Mảng chứa các tham số tương ứng</param>
        /// <returns>DataSet chứa kết quả lệnh</returns>
        public static DataSet ExecuteQuery(string sqlStr, CommandType type, params SqlParameter[] parr)
        {
            SqlCommand cmd = new SqlCommand();            
            cmd.Connection = GETCONNECTION();
            cmd.CommandText = sqlStr;
            cmd.CommandType = type;
            if (parr != null && parr.Length > 0)
            {
                cmd.Parameters.AddRange(parr);
            }
            cmd.Connection.Open();
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataSet ds = new DataSet();
            da.Fill(ds);
            cmd.Parameters.Clear();
            cmd.Connection.Close();
            da.Dispose();
            cmd.Dispose();            
            return ds;
        }

        public static DataSet ExecuteQuery(string sqlStr, CommandType type)
        {
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = GETCONNECTION();
            cmd.CommandText = sqlStr;
            cmd.CommandType = type;            
            cmd.Connection.Open();
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataSet ds = new DataSet();
            da.Fill(ds);
            cmd.Parameters.Clear();
            cmd.Connection.Close();
            da.Dispose();
            cmd.Dispose();
            return ds;
        }
        #endregion        
        
        public static void EXECUTEQUERY(string sql)
        { }
        #endregion

        #region ExecuteReader()
        /// <summary>
        /// Tùng LA 30-05-2007
        /// Method thực hiện việc đọc dữ liệu từ cơ sở dữ liệu
        /// Thường là ứng với lệnh SELECT trong sql
        /// Sử dụng DataReader
        /// </summary>
        /// <param name="sqlStr">String chứa câu query sql</param>
        /// <param name="type">Kiểu của câu query vd: CommandType.StoreProcedure hoặc CommandType.Text</param>
        /// <param name="parr">Mảng chứa các tham số tương ứng</param>
        /// <returns>DataSet chứa kết quả lệnh</returns>
        public void ExecuteReader(string sqlStr, CommandType type, params SqlParameter[] parr)
        { 
            
        }
        #endregion

    }
}
